﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.RPP.EntidadesNegocio;
using System.Data.SqlClient;
using System.Data;

namespace MJM.RPP.AccesoDatos
{
    public class ResponsableAgendaAD
    {
        public int Insertar(ResponsableAgendaEN obj)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_i_T_WEB_RESDEP_Insertar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmAnexo, prmTelefono, prmRPC,prmIdPersona,prmIdResponsable,prmIDDependencia,prmOrden;
            try
            {
                prmAnexo = cmd.CreateParameter();
                prmAnexo.ParameterName = "@vRESDEP_chANERES";
                prmAnexo.SqlDbType = SqlDbType.VarChar;
                prmAnexo.Value = obj.RESDEP_chANERES;
                cmd.Parameters.Add(prmAnexo);

                prmTelefono = cmd.CreateParameter();
                prmTelefono.ParameterName = "@vRESDEP_chDIRRES";
                prmTelefono.SqlDbType = SqlDbType.VarChar;
                prmTelefono.Value = obj.RESDEP_chDIRRES;
                cmd.Parameters.Add(prmTelefono);

                prmRPC = cmd.CreateParameter();
                prmRPC.ParameterName = "@vRESDEP_chRPCRES";
                prmRPC.SqlDbType = SqlDbType.VarChar;
                prmRPC.Value = obj.RESDEP_chRPCRES;
                cmd.Parameters.Add(prmRPC);

                prmIDDependencia = cmd.CreateParameter();
                prmIDDependencia.ParameterName = "@vDEPARE_P_inID";
                prmIDDependencia.SqlDbType = SqlDbType.Int;
                prmIDDependencia.Value = obj.DEPARE_P_inID;
                cmd.Parameters.Add(prmIDDependencia);

                prmIdPersona = cmd.CreateParameter();
                prmIdPersona.ParameterName = "@vPAD_P_chIDPER";
                prmIdPersona.SqlDbType = SqlDbType.Int;
                prmIdPersona.Value = obj.PAD_P_chIDPER;
                cmd.Parameters.Add(prmIdPersona);

                prmOrden = cmd.CreateParameter();
                prmOrden.ParameterName = "@vRESDEP_inORDRES";
                prmOrden.SqlDbType = SqlDbType.Int;
                prmOrden.Value = obj.RESDEP_inORDRES;
                cmd.Parameters.Add(prmOrden);

                prmIdResponsable = cmd.CreateParameter();
                prmIdResponsable.Direction = ParameterDirection.ReturnValue;
                prmIdResponsable.SqlDbType = SqlDbType.Int;
                cmd.Parameters.Add(prmIdResponsable);
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo = Convert.ToInt32(prmIdResponsable.Value);

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                codigo = 0;
                cmd.Dispose();
                conn.Dispose();
            }

            return codigo;
        }

        public List<ResponsableAgendaEN> Listar()
        {
            List<ResponsableAgendaEN> lst = new List<ResponsableAgendaEN>();
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_RESDEP_Listar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader dr;
            ResponsableAgendaEN obj;
            try
            {
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    obj = new ResponsableAgendaEN();
                    obj.RESDEP_P_inID = dr.GetInt32(0);
                    obj.DEPARE_P_inID = dr.GetInt32(1);
                    obj.PAD_P_chIDPER = dr.GetInt32(2);
                    obj.RESDEP_chANERES = dr.GetString(3);
                    obj.RESDEP_chDIRRES = dr.GetString(4);
                    obj.RESDEP_chRPCRES = dr.GetString(5);
                    try
                    {
                        obj.RESDEP_inORDRES = dr.GetInt32(6);
                    }
                    catch
                    {
                        obj.RESDEP_inORDRES = 9999;
                    }
                    obj.RESDEP_inFLAELI = dr.GetInt32(7);
                    obj.Direccion = dr.GetString(9);
                    obj.Dependencia = dr.GetString(8);
                    obj.ID=dr.GetInt32(10);
                    obj.NombrePer = dr.GetString(11);
                    lst.Add(obj);
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();                
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }

            return lst;
        }

        public int Actualizar(ResponsableAgendaEN obj)
        {
            int codigo = 0;
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_u_T_WEB_RESDEP_Actualizar", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmAnexo, prmTelefono, prmRPC, prmIdPersona, prmIdResponsable, prmIDDependencia,prmEliminar,prmOrden;
            try
            {
                prmAnexo = cmd.CreateParameter();
                prmAnexo.ParameterName = "@vRESDEP_chANERES";
                prmAnexo.SqlDbType = SqlDbType.VarChar;
                prmAnexo.Value = obj.RESDEP_chANERES;
                cmd.Parameters.Add(prmAnexo);

                prmTelefono = cmd.CreateParameter();
                prmTelefono.ParameterName = "@vRESDEP_chDIRRES";
                prmTelefono.SqlDbType = SqlDbType.VarChar;
                prmTelefono.Value = obj.RESDEP_chDIRRES;
                cmd.Parameters.Add(prmTelefono);

                prmRPC = cmd.CreateParameter();
                prmRPC.ParameterName = "@vRESDEP_chRPCRES";
                prmRPC.SqlDbType = SqlDbType.VarChar;
                prmRPC.Value = obj.RESDEP_chRPCRES;
                cmd.Parameters.Add(prmRPC);

                prmIDDependencia = cmd.CreateParameter();
                prmIDDependencia.ParameterName = "@vDEPARE_P_inID";
                prmIDDependencia.SqlDbType = SqlDbType.Int;
                prmIDDependencia.Value = obj.DEPARE_P_inID;
                cmd.Parameters.Add(prmIDDependencia);

                prmEliminar = cmd.CreateParameter();
                prmEliminar.ParameterName = "@vRESDEP_inFLAELI";
                prmEliminar.SqlDbType = SqlDbType.Int;
                prmEliminar.Value = obj.RESDEP_inFLAELI;
                cmd.Parameters.Add(prmEliminar);

                prmIdPersona = cmd.CreateParameter();
                prmIdPersona.ParameterName = "@vPAD_P_chIDPER";
                prmIdPersona.SqlDbType = SqlDbType.Int;
                prmIdPersona.Value = obj.PAD_P_chIDPER;
                cmd.Parameters.Add(prmIdPersona);

                prmIdResponsable = cmd.CreateParameter();
                prmIdResponsable.ParameterName = "@vRESDEP_P_inID";
                prmIdResponsable.SqlDbType = SqlDbType.Int;
                prmIdResponsable.Value = obj.RESDEP_P_inID;
                cmd.Parameters.Add(prmIdResponsable);

                prmOrden = cmd.CreateParameter();
                prmOrden.ParameterName = "@vRESDEP_inORDRES";
                prmOrden.SqlDbType = SqlDbType.Int;
                prmOrden.Value = obj.RESDEP_inORDRES;
                cmd.Parameters.Add(prmOrden);

                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
                codigo=1;
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                codigo = 0;
                cmd.Dispose();
                conn.Dispose();
            }

            return codigo;
        }

        public DataTable GetListaAnexos(String Area)
        {
            DataTable dt = new DataTable();
            DataRow dtr;
            SqlConnection conn = new SqlConnection(Cadena.CadenaPadron());
            SqlCommand cmd = new SqlCommand("sp_s_T_WEB_RESDEP_ListReport", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlDataReader dr;
            try
            {
                dt.TableName = "Anexos";
                dt.Columns.Add("NombreSubGerencia");
                dt.Columns.Add("NombreDependencia");
                dt.Columns.Add("NombrePersona");
                dt.Columns.Add("Direccion");
                dt.Columns.Add("Telefono");
                dt.Columns.Add("Anexo");
                dt.Columns.Add("RPC");
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                while(dr.Read())
                {
                    dtr = dt.NewRow();
                    dtr["NombreSubGerencia"] = dr.GetString(0);
                    dtr["NombreDependencia"] = dr.GetString(1);
                    dtr["NombrePersona"] = dr.GetString(2);
                    dtr["Direccion"] = dr.GetString(3);
                    dtr["Telefono"] = dr.GetString(4);
                    dtr["Anexo"] = dr.GetString(5);
                    dtr["RPC"] = dr.GetString(6);
                    dt.Rows.Add(dtr);
                }
                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch(Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return dt;
        }
    }
}
